package com.zy.pigchat_server.utlis;

import com.zy.pigchat_server.annotation.HasRole;
import com.zy.pigchat_server.exception.AuthCheckException;

import java.lang.reflect.Method;
import java.lang.reflect.TypeVariable;
import java.util.Arrays;


/**
 * @author 这是那头猪？
 * @version 1.0
 * @description:  权限校验主键
 * @date 2023/7/26 13:07
 */
public class AuthUtls {

    /**
     *  校验接口权限
     * @param target        目标类
     * @param methodName    要执行的目标方法
     * @return
     */
    public static void checkAuth(Object target, String methodName, TypeVariable[] typeParameters){
        Class<?> aClass = target.getClass();
        Method[] methods = aClass.getDeclaredMethods();
        Arrays.stream(methods).forEach(v -> {
            if (v.getName().equals(methodName)) {
                HasRole hasRole = v.getAnnotation(HasRole.class);
                String[] role = hasRole.role();
                if (hasRole == null || ! role[0].equals("text")) {
                    // 查询用户权限，然后将权限进行对比
                    throw new AuthCheckException("用户没有此接口的权限");
                }
            }
        });

    }
}
